package es.armaplus.struts.actions.presupuestos;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import es.armaplus.business.BusinessFactory;
import es.armaplus.business.ClienteBusiness;
import es.armaplus.business.PresupuestoBusiness;
import es.armaplus.commons.Constantes;
import es.armaplus.ddbb.base.Clientes;
import es.armaplus.ddbb.base.PresupuestoEntrada;
import es.armaplus.ddbb.base.Presupuestos;
import es.armaplus.struts.actions.BaseAction;
import es.armaplus.struts.forms.presupuestos.PresupuestosForm;

/**
 * Acci�n PRE-carga al formulario de alta del presupuesto.
 * @author Texaco
 *
 */
public class AltaPresupuesto extends BaseAction {

	private static final Log log = LogFactory.getLog(AltaPresupuesto.class);
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		log.debug(Constantes.METHOD_BEGIN);
		
	
		PresupuestosForm presupuestoF = (PresupuestosForm) form;
		
		ClienteBusiness clienteB = (ClienteBusiness) 
			BusinessFactory.getBusiness(BusinessFactory.CLIENTE_BUSINESS);
		
		String idCliente = null;
		if(request.getParameter(Constantes.PARAM_ID_CLIENTE)!=null &&
				!request.getParameter(Constantes.PARAM_ID_CLIENTE).equals("")){
			idCliente = request.getParameter(Constantes.PARAM_ID_CLIENTE);
		}else{
			idCliente = presupuestoF.getIdCliente();
		}
		
		Clientes cliente = clienteB.getCliente(idCliente);
		presupuestoF.setCliente(cliente);
		
		PresupuestoBusiness presupuestoB = 
			(PresupuestoBusiness) BusinessFactory.getBusiness(BusinessFactory.PRESUPUESTO_BUSINESS);
		
		if(request.getParameter(Constantes.PARAM_ID_PRESUPUESTO)!= null &&
				!request.getParameter(Constantes.PARAM_ID_PRESUPUESTO).equals("")){
			presupuestoF.setIdPresupuesto(request.getParameter(Constantes.PARAM_ID_PRESUPUESTO));
		}
		
		if(presupuestoF.getIdPresupuesto()!=null){
			presupuestoF.setPresupuesto(presupuestoB.getPresupuesto(presupuestoF.getIdPresupuesto()));
			
		}

		Presupuestos presupuesto = presupuestoF.getPresupuesto();
		if(presupuesto.getIdPresupuesto()!= null){
			Collection<PresupuestoEntrada> entradas = presupuestoB.getEntradas(presupuesto);
			request.setAttribute(Constantes.ATTRIBUTE_ENTRADAS,entradas);
			presupuestoF.setTotal(presupuestoB.getTotalImpDescInc(presupuesto));
			presupuestoF.setSubtotal(presupuestoB.getTotal(presupuesto));
			presupuestoF.setIva(presupuestoB.getImpuesto(presupuesto));
			presupuestoF.setDescuentoStr(presupuestoB.getDescuento(presupuesto));
		}
		log.debug(Constantes.METHOD_END);
		return mapping.findForward(Constantes.FORWARD_SUCCESS);
	}

	
}
